package com.marco.ipdata.service;

import com.google.common.collect.HashBasedTable;
import com.marco.ipdata.domain.IPBase;

import java.io.File;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * IPBaseService.java
 * Create on 2017/3/23
 * Copyright(c) JD Inc 2017. All Rights Reserved.
 * <pre>
 * 功能说明：此service处理关于接口API数据的统一方法
 * </pre>
 */
public interface IPBaseService {
    /**
     * 批量保存
     */
    void batchSave(String tableName, List<IPBase> list);

    /**
     * 根据IP查询各个接口，利用投票（权重制）进行结果输出
     */
    IPBase getBestResult(String ip,String city);

    /**
     * 纯真数据处理 ：API为文件形式
     * 根据给定的文件处理纯真数据
     * 并将数据存储到数据库中
     */
    void processPureData(File file);

    /**
     * IPIP数据处理：API为文件形式
     * 根据给定的文件处理IPIP数据，由于IPIP数据的高权重性，将数据按格式处理后存储在HashTable中
     */
    Map<Long ,Map<Long,IPBase>> processIPIPData(File srcFile);

    /**
     * 获取IPIP国家字段无法识别的脏数据 ，数据存储在api_ip_ipip_bad表中
     */
    List<String> getIPIPBadData();

}
